// 语音播放调试测试脚本
// 用于调试0:00显示问题

const testVoiceDebug = () => {
  console.log('🔍 开始语音播放调试测试...')
  console.log('=' * 50)
  
  // 测试1: 检查语音播放器创建
  const testPlayerCreation = () => {
    console.log('\n🔧 测试1: 语音播放器创建')
    console.log('-' * 30)
    
    try {
      // 模拟创建音频上下文
      const audioContext = wx.createInnerAudioContext()
      console.log('✅ 音频上下文创建成功:', !!audioContext)
      
      // 配置音频上下文
      audioContext.obeyMuteSwitch = false
      audioContext.volume = 1.0
      
      // 测试事件绑定
      let eventCount = 0
      
      audioContext.onPlay(() => {
        eventCount++
        console.log('▶️ onPlay 事件触发')
      })
      
      audioContext.onCanplay(() => {
        eventCount++
        console.log('🎵 onCanplay 事件触发, duration:', audioContext.duration)
      })
      
      audioContext.onTimeUpdate(() => {
        eventCount++
        console.log('⏰ onTimeUpdate 事件触发:', {
          currentTime: audioContext.currentTime,
          duration: audioContext.duration
        })
      })
      
      audioContext.onEnded(() => {
        eventCount++
        console.log('🏁 onEnded 事件触发')
      })
      
      audioContext.onError((err) => {
        eventCount++
        console.error('❌ onError 事件触发:', err)
      })
      
      // 设置测试音频源
      const testUrl = 'https://www.soundjay.com/misc/sounds/bell-ringing-05.wav'
      audioContext.src = testUrl
      console.log('📡 设置音频源:', testUrl)
      
      // 尝试播放
      audioContext.play()
      console.log('▶️ 开始播放测试音频')
      
      // 5秒后停止测试
      setTimeout(() => {
        console.log('⏹️ 停止测试播放')
        audioContext.stop()
        audioContext.destroy()
        console.log(`📊 事件触发次数: ${eventCount}`)
        console.log('✅ 播放器创建测试完成')
      }, 5000)
      
      return true
    } catch (error) {
      console.error('❌ 播放器创建失败:', error)
      return false
    }
  }
  
  // 测试2: 检查时间更新机制
  const testTimeUpdate = () => {
    console.log('\n⏰ 测试2: 时间更新机制')
    console.log('-' * 30)
    
    try {
      const audioContext = wx.createInnerAudioContext()
      
      // 模拟时间更新
      let timeUpdateCount = 0
      let lastCurrentTime = 0
      let lastDuration = 0
      
      audioContext.onTimeUpdate(() => {
        timeUpdateCount++
        const currentTime = audioContext.currentTime || 0
        const duration = audioContext.duration || 0
        
        console.log(`⏰ 时间更新 #${timeUpdateCount}:`, {
          currentTime: currentTime.toFixed(2),
          duration: duration.toFixed(2),
          progress: duration > 0 ? ((currentTime / duration) * 100).toFixed(1) + '%' : '0%'
        })
        
        // 检查时间是否有变化
        if (currentTime !== lastCurrentTime) {
          console.log('✅ 当前时间有变化')
          lastCurrentTime = currentTime
        }
        
        if (duration !== lastDuration && duration > 0) {
          console.log('✅ 音频时长已获取:', duration)
          lastDuration = duration
        }
      })
      
      audioContext.onCanplay(() => {
        console.log('🎵 音频可播放, 时长:', audioContext.duration)
      })
      
      // 使用一个较短的测试音频
      audioContext.src = 'https://www.soundjay.com/misc/sounds/bell-ringing-05.wav'
      audioContext.play()
      
      // 10秒后停止
      setTimeout(() => {
        audioContext.stop()
        audioContext.destroy()
        console.log(`📊 时间更新总次数: ${timeUpdateCount}`)
        console.log('✅ 时间更新测试完成')
      }, 10000)
      
      return true
    } catch (error) {
      console.error('❌ 时间更新测试失败:', error)
      return false
    }
  }
  
  // 测试3: 检查状态管理
  const testStateManagement = () => {
    console.log('\n📊 测试3: 状态管理')
    console.log('-' * 30)
    
    try {
      // 模拟状态
      let state = {
        isPlaying: false,
        isPaused: false,
        currentTime: 0,
        duration: 0,
        progress: 0,
        error: null
      }
      
      console.log('📱 初始状态:', state)
      
      // 模拟状态更新
      const updateState = (updates) => {
        state = { ...state, ...updates }
        console.log('🔄 状态更新:', updates)
        console.log('📱 当前状态:', state)
      }
      
      // 模拟播放流程
      console.log('▶️ 开始播放...')
      updateState({ isPlaying: true, currentTime: 0 })
      
      // 模拟时间更新
      let time = 0
      const interval = setInterval(() => {
        time += 0.5
        const duration = 10 // 假设10秒音频
        const progress = (time / duration) * 100
        
        updateState({
          currentTime: time,
          duration: duration,
          progress: progress
        })
        
        if (time >= duration) {
          clearInterval(interval)
          updateState({ isPlaying: false, currentTime: duration, progress: 100 })
          console.log('🏁 播放完成')
        }
      }, 500)
      
      return true
    } catch (error) {
      console.error('❌ 状态管理测试失败:', error)
      return false
    }
  }
  
  // 运行所有测试
  const runDebugTests = () => {
    console.log('🚀 开始运行语音播放调试测试...')
    console.log('=' * 50)
    
    const results = []
    
    // 测试1: 播放器创建
    const test1Result = testPlayerCreation()
    results.push({ name: '播放器创建', result: test1Result })
    
    // 测试2: 时间更新
    setTimeout(() => {
      const test2Result = testTimeUpdate()
      results.push({ name: '时间更新', result: test2Result })
    }, 2000)
    
    // 测试3: 状态管理
    setTimeout(() => {
      const test3Result = testStateManagement()
      results.push({ name: '状态管理', result: test3Result })
    }, 4000)
    
    // 输出结果
    setTimeout(() => {
      console.log('\n📊 调试测试结果:')
      console.log('=' * 50)
      results.forEach((test, index) => {
        const status = test.result ? '✅ 通过' : '❌ 失败'
        console.log(`${index + 1}. ${test.name}: ${status}`)
      })
      
      const passedTests = results.filter(test => test.result).length
      const totalTests = results.length
      const successRate = (passedTests / totalTests) * 100
      
      console.log(`\n📈 测试通过率: ${passedTests}/${totalTests} (${successRate.toFixed(1)}%)`)
      
      if (successRate === 100) {
        console.log('🎉 所有调试测试通过！')
      } else {
        console.log('⚠️ 部分测试失败，请检查相关功能')
      }
    }, 15000)
  }
  
  // 开始调试测试
  runDebugTests()
}

// 导出测试函数
if (typeof module !== 'undefined' && module.exports) {
  module.exports = {
    testVoiceDebug
  }
}

// 如果在浏览器环境中，直接运行测试
if (typeof window !== 'undefined') {
  console.log('🌐 在浏览器环境中运行调试测试...')
  testVoiceDebug()
}

// 如果在微信小程序环境中
if (typeof wx !== 'undefined') {
  console.log('📱 在微信小程序环境中运行调试测试...')
  testVoiceDebug()
}
